package edu.mis.modules.product;

import com.jfinal.aop.Before;
import com.jfinal.aop.Clear;
import com.jfinal.core.Controller;

import edu.mis.model.Catalog;
import edu.mis.model.Product;


/**
 * 用户控制器
 *
 */
public class ProductController extends Controller {
	
	static ProductService service = new ProductService();
	
	public void index() {
		render("product.html");
	}
	
	public void list(){
		setAttr("data", service.findAllProductWithCatalog());
		renderJson();  
	}

	/**
	 * 注册用户视图
	 */
	public void add() {
		setAttr("catalog", Catalog.dao.findAll());
		    //render("add.html");  //（默认对应add.html，否则需显性指定，如render("addUser.html")）
	}

	public void register(){
		Product product  =  getModel(Product.class);   //使用getModel方法获取表单值，表单中name应使用对象名.属性名，如user.id, user.password,详见jfinal手册
		if(service.register(product)){
			setAttr("result", true); 
			setAttr("msg", "添加商品成功!"); 
		}else{
			setAttr("result",false);
			setAttr("msg", "添加失败，商品名重复!"); 
		}
		renderJson(); 
	}
	
	/**
	 * 修改密码视图（默认对应edit.html，否则需显性指定，如render("editPassword.html")，）
	 */
	public void edit() {
		setAttr("product", service.findProductByProductid(getParaToInt("productid")));  //此处user应与表单中${(user.name)!}等中的user保持一致。
	}
	
	public void updatePrice(){
		int productid=this.getParaToInt("productid");   //使用getPara获取表单值，与getModel方法获得表单值不同，name不能使用对象名.属性名，如user.password，而直接使用属性名，如password
		int newPrice = this.getParaToInt("price");
		if(service.updatePrice(productid, newPrice)){
			setAttr("result", true);
			setAttr("msg", "修改价格成功!");
		}else{
			setAttr("result", false);
		}
		renderJson();
	}
	
	/**
	 * 用户授权视图
	 */
	public void auth() {
		setAttr("product", service.findProductByProductid(getParaToInt("productid")));  //此处user应与表单中${(user.name)!}等中的user保持一致。
		setAttr("catalog",Catalog.dao.findAll());//授权前得到所有权限
	}
	
	/**
	 * 用户授权
	 */
	public void authorize(){
		int productid=this.getParaToInt("productid");   
		int catalogid = this.getParaToInt("catalogid");
		if(service.userAuthorize(productid, catalogid)){
			setAttr("result", true);
			setAttr("msg", "商品分类成功!");
		}else{
			setAttr("result", false);
		}
		renderJson();
	}
	
//	@Before(LoginValidator.class)   //执行前进行后端校验，用户名密码是否为空
//	@Clear({LoginInterceptor.class}) //因为执行前用户还未登录，应清除登录拦截器。登录拦截器为全局拦截器，所有控制器默认都会被拦截
//	public void loginValidate() {
//		String name = getPara("name");
//		String password = getPara("password") ;
//		if(service.loginValidate(name,password)){
//			setSessionAttr("loginUser", name); //session记录登录用户名
//			redirect("/index");
//		}else{
//			redirect("/login");
//			setAttr("msg", "登录失败!");
//		}		
//	}

}
